package org.ehe.business.bom.domain;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ehe.common.mybatis.core.domain.BaseEntity2;
import java.math.BigDecimal;

/**
 * BOM结构明细表实体类
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("t_bom_structure")
public class BomStructure extends BaseEntity2 {

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * BOM版本ID
     */
    private Long bomVersionId;

    /**
     * 父级物料ID（NULL表示顶级）
     */
    private Long parentItemId;

    /**
     * 物料ID（关联元部件管理）
     */
    private Long itemId;

    /**
     * 物料编码
     */
    private String itemCode;

    /**
     * 物料名称
     */
    private String itemName;

    /**
     * 物料类型：1-原材料 2-半成品 3-成品 4-标准件 5-外购件
     */
    private Integer itemType;

    @TableField(exist = false)
    private String itemTypeName;

    /**
     * 规格型号
     */
    private String specification;

    /**
     * 计量单位
     */
    private String unit;

    @TableField(exist = false)
    private String unitName;

    /**
     * 用量/数量
     */
    private BigDecimal quantity;

    /**
     * 损耗率(%)
     */
    private BigDecimal scrapRate;

    /**
     * 层级编号
     */
    private Integer levelNo;

    /**
     * 序号
     */
    private Integer seqNo;

    /**
     * 是否关键件：0-否 1-是
     */
    private Integer isKeyItem;

    /**
     * 是否可选件：0-否 1-是
     */
    private Integer isOptional;

    /**
     * 替代组
     */
    private String substituteGroup;

    /**
     * 首选供应商ID
     */
    private Long supplierId;

    /**
     * 首选供应商名称
     */
    private String supplierName;

    /**
     * 单价
     */
    private BigDecimal unitPrice;

    /**
     * 总价
     */
    private BigDecimal totalPrice;

    /**
     * 采购提前期（天）
     */
    private Integer leadTime;

    /**
     * 备注
     */
    private String remark;

    /**
     * 物料编码
     */
    @TableField(exist = false)
    private String categoryCode;
    /**
     * 流水号
     */
    @TableField(exist = false)
    private String customizeCode;
    @TableField(exist = false)
    private String fullCode;
    @TableField(exist = false)
    private String fullName;
}
